home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / etherleak.nasl < prev    next >
Text File  |  2005-01-14  |  2KB  |  111 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. # See the Nessus Scripts License for details
  5.  
  6. if(description)
  7. {
  8.  script_id(11197);
  9.  script_bugtraq_id(6535);
  10.  script_version ("$Revision: 1.11 $");
  11.  script_cve_id("CAN-2003-0001");
  12.  
  13.  
  14.  
  15.  
  16.  name["english"] = "Etherleak";
  17.  script_name(english:name["english"]);
  18.  
  19.  desc["english"] = "
  20. The remote host is vulnerable to an 'Etherleak' -
  21. the remote ethernet driver seems to leak bits of the
  22. content of the memory of the remote operating system.
  23.  
  24. Note that an attacker may take advantage of this flaw
  25. only when its target is on the same physical subnet.
  26.  
  27. See also : http://www.atstake.com/research/advisories/2003/a010603-1.txt 
  28. Solution : Contact your vendor for a fix
  29. Risk factor : High";
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  script_description(english:desc["english"]);
  36.  
  37.  summary["english"] = "etherleak check";
  38.  
  39.  script_summary(english:summary["english"]);
  40.  
  41.  script_category(ACT_GATHER_INFO);
  42.  
  43.  
  44.  script_copyright(english:"This script is Copyright (C) 2003 Renaud Deraison");
  45.  family["english"] = "Misc.";
  46.  script_family(english:family["english"]);
  47.  exit(0);
  48. }
  49.  
  50. #
  51. # The script code starts here
  52. #
  53. ##include("dump.inc");
  54.  
  55. function probe()
  56. {
  57.  ip     = forge_ip_packet(ip_p:IPPROTO_ICMP, ip_src:this_host());
  58.  icmp   = forge_icmp_packet(ip:ip, icmp_type:8, icmp_code:0, icmp_seq:1, icmp_id:1, data:"x");
  59.  
  60.  filter = string("icmp and src host ", get_host_ip(), " and dst host ", this_host());
  61.  
  62.  for(i=0;i<3;i++)
  63.  {
  64.  rep = send_packet(icmp, pcap_filter:filter);
  65.  if(rep)break;
  66.  }
  67.  
  68.  if(rep == NULL)exit(0);
  69. ##dump(dtitle: "ICMP", ddata: rep);
  70.  
  71.  len = get_ip_element(ip:rep, element:"ip_len");
  72.  if(strlen(rep) > len)
  73.  {
  74.  str="";
  75.  for(i=len;i<strlen(rep);i++)
  76.   {
  77.    str = string(str, rep[i]);
  78.   }
  79.   return(str);
  80.  }
  81.  else return(NULL);
  82. }
  83.  
  84. function ping()
  85. {
  86.  ip     = forge_ip_packet(ip_p:IPPROTO_ICMP, ip_src:this_host());
  87.  icmp   = forge_icmp_packet(ip:ip, icmp_type:8, icmp_code:0, icmp_seq:1, icmp_id:1, data:crap(data:"nessus", length:254));
  88.  
  89.  filter = string("icmp and src host ", get_host_ip(), " and dst host ", this_host());
  90.  
  91.  for(i=0;i<5;i++) rep = send_packet(icmp, pcap_filter:filter);
  92. }
  93.  
  94. if(islocalhost())exit(0);
  95.  
  96.  
  97. if(islocalnet())
  98. {
  99.  str1 = probe();
  100.  ping();
  101.  sleep(1);
  102.  str2 = probe();
  103.  
  104. ##dump(dtitle: "ether1", ddata: str1);
  105. ##dump(dtitle: "ether2", ddata: str2);
  106.  
  107.  if(isnull(str1) || isnull(str2))exit(0);
  108.  
  109.  if(!(str1 == str2)){security_hole(proto:"icmp", port:0);}
  110. }
  111.